/*
  括号匹配加强版 bracket.cpp
  题目描述
    字符串中只含有括号 (),[],<>,{}, 判断输入的字符串中括号是否匹配。
    如果括号有互相包含的形式，从内到外必须是<>,(),[],{}，
    例如：
      输入: [()] 输出:YES，
      而输入([])，应该输出 NO。
  输入描述
    第一行为一个整数 n，表示以下有多少个由括号组成的字符串。
    接下来的 n 行，每行都是一个由括号组成的长度不超过 255 的字符串。
    输入文件为 bracket.in
  输出描述
    有 n 行，每行都是 YES 或 NO。
    输出文件为 bracket.out
  样例1
    输入
      5
      {}{}<><>()()[][]
      {{}}{{}}<<>><<>>(())(())[[]][[]]
      {{}}{{}}<<>><<>>(())(())[[]][[]]
      {<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
      ><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
    输出
      YES
      YES
      YES
      YES
      NO
  提示
    每行都是一个由括号组成的长度不超过 255 的字符串
*/